package top.mccat.web.controller.tool;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * @author Raven
 * @date 2022/04/01 21:15
 *
 */
public class DateUtils {
    private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss");
    public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM");
    /**
     * 迟到时间
     */
    public static String ARRIVE_LATE_TIME = "09:00:00";
    /**
     * 早退时间
     */
    public static String EARLY_LEAVE_TIME = "18:00:00";
    /**
     * 获取本月的工作日方法
     * @return 日期
     */
    public static Integer getDaysWithoutWeekend() {
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(new Date(System.currentTimeMillis()));
        int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        int vacationDays = days/7*2;
        return days-vacationDays;
    }

    /**
     * 判断是否 为指定时间段的时间，返回打卡时间是否大于期限时间
     * @param extraDate 数据时间
     * @param latest 期限时间
     * @return 是否检验成功
     */
    public static boolean workPunchCheck(Date extraDate,String latest){
        try {
            Date parse = TIME_FORMAT.parse(TIME_FORMAT.format(extraDate));
            Date date2 = TIME_FORMAT.parse(latest);
            return parse.getTime() >= date2.getTime();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 转换为月份专属日期格式
     * @param date
     * @return
     */
    public static Date formatDate(Date date){
        try {
            return DATE_FORMAT.parse(DATE_FORMAT.format(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 检查月份是否为相同 月
     * @param extraDate 当前日期
     * @param sqlDate 数据库日期
     * @return
     */
    public static boolean monthCheck(Date extraDate,String sqlDate){
        try {
            Date parse = DATE_FORMAT.parse(DATE_FORMAT.format(extraDate));
            Date date2 = DATE_FORMAT.parse(sqlDate);
            return parse.getTime() == date2.getTime();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 进行时间转换方法
     * @param date date对象
     * @return 时间
     */
    public static String formatTime(Date date){
        if(date!=null){
            return TIME_FORMAT.format(date);
        }
        return null;
    }
}
